package com.dh.blog.handler.xml;

import java.util.Map;

/**
 * 目录接口
 * @author David
 *
 */
public interface CTNode {
	/**
	 * 获得索引
	 * @return
	 */
	public String getIndex();
	/**
	 * 更新
	 * @param n
	 */
	public void update(CTNode n);
	/**
	 * 当前目录级别的偏移量(距离第一个目录项)
	 */
	public int offset();
	/**
	 * 设置目录偏移量
	 * @param offset
	 */
	public void setOffset(int offset);
	/**
	 * 目录级别
	 * @return
	 */
	public int level();
	/**
	 * 设置目录级别
	 * @param level
	 */
	public void setLevel(int level);
	/**
	 * 获得父节点
	 * @return
	 */
	public CTNode getParent();
	/**
	 * 设置父结点
	 * @param node
	 */
	public void setParent(CTNode node);
	/**
	 * 获得所有子节点
	 * @return
	 */
	public CTNode[] getChilds();
	/**
	 * 设置子节点
	 */
	public void setChilds(CTNode[] childs);
	/**
	 * 添加子节点
	 * @param childs
	 */
	public void addChilds(CTNode[] childs);
	public void addChild(CTNode child);
	/**
	 * 设置文本内容
	 * @param text
	 */
	public void setText(String text);
	/**
	 * 获得文本内容
	 * @return
	 */
	public String getText();
	/**
	 * 增加属性
	 * @param key
	 * @param value
	 */
	public void addAttr(String key,Object value);
	/**
	 * 删除属性
	 * @param key
	 */
	public void removeAttr(String key);
	/**
	 * 获得所有属性
	 * @return
	 */
	public Map<String,Object> attrs();
	/**
	 * 获得属性
	 * @param key
	 */
	public Object getAttr(String key);
	/**
	 * 序列化成串
	 * @return
	 */
	public String serialize();
}
